﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Telerik.WinControls.UI;

namespace OwnZTec.LojaDelivery.UI.WinForms
{
    public partial class FrmPedidoPorCliente : OwnZForm
    {
        private bool carregado { get; set; }

        public FrmPedidoPorCliente()
        {
            InitializeComponent();
        }

        private void FrmPedidoPorCliente_Load(object sender, EventArgs e)
        {
            carregado = false;
            CarregaCliente();
            cboClientes.DropDownListElement.AutoCompleteSuggest.SuggestMode = SuggestMode.Contains;

            Contexto.MainForm.Cursor = Cursors.Arrow;
            carregado = true;
        }

        private void cboClientes_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
        {
            //if (carregado)
            //    AtualizaGrid(cboClientes.SelectedValue.ParaInt());
        }

        private void CarregaCliente()
        {
            cboClientes.DataSource = Contexto.Db.tbClientes.ToList();
            cboClientes.DisplayMember = "desCliente";
            cboClientes.ValueMember = "idCliente";
            cboClientes.SelectedIndex = -1;
        }

        private void rbTodos_CheckedChanged(object sender, EventArgs e)
        {
            if (rbTodos.Checked)
                grpData.Visible = false;
        }

        private void rbData_CheckedChanged(object sender, EventArgs e)
        {
            if (rbData.Checked)
                grpData.Visible = true;
        }

        private void btnImprimir_Click(object sender, EventArgs e)
        {
            int contador = 0;
            int cliente = cboClientes.SelectedValue.ParaInt();
            contador = Contexto.Db.tbVendas.Where(p => p.idCliente == cliente).Count();
            if (contador == 0)
            {
                MessageBox.Show("Não existem pedidos para este cliente.", "Pedidos", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            StringBuilder sb = new StringBuilder();
            sb.AppendLine("              Salgados Celia              ");
            sb.AppendLine("==========================================");
            sb.AppendLine("     Relatorio de Pedidos por Cliente     ");
            sb.AppendLine("==========================================");
            sb.AppendLine("Cliente: " + cboClientes.Text);
            sb.AppendLine("==========================================");

            if (rbData.Checked)
                sb.AppendLine("Periodo: de " + dtpInicial.Value.ToShortDateString() + " a " + dtpFinal.Value.ToShortDateString());
            else
                sb.AppendLine("Periodo: Todas as comandas");
            sb.AppendLine("==========================================");
            sb.AppendLine("");
            sb.AppendLine("  Data       Comanda        Valor    Situação");


            string situacao = string.Empty;
            foreach (var item in Contexto.Db.tbVendas.Where(p => p.idCliente == cliente))
            {
                switch (item.statusVenda.ToUpper())
                {
                    case "A":
                        situacao = "Aberto";
                        break;
                    case "E":
                        situacao = "Para Entrega";
                        break;
                    case "F":
                        situacao = "Fechada";
                        break;
                    case "P":
                        situacao = "Pendente Pagamento";
                        break;
                    case "C":
                        situacao = "Cancelada";
                        break;
                    default:
                        break;
                }

                sb.AppendLine(item.dtVenda.ToShortDateString() + "    " + item.numeroVenda.ToString() + "     " + item.valorVenda.ToString("C2") + "   " + situacao);
            }

            sb.AppendLine("================== FIM ==================");
            //Inserindo espaços para cortar
            for (int i = 0; i <= 7; i++)
            {
                sb.AppendLine("");
            }
            //enviar para impressora
            Impressao.Impressao imprime = new Impressao.Impressao();
            imprime.ImprimeDesperdicio(sb);

            //fechar janela
            this.Close();
        }

        private void btnVisualizar_Click(object sender, EventArgs e)
        {
            int contador = 0;
            int cliente = cboClientes.SelectedValue.ParaInt();
            contador = Contexto.Db.tbVendas.Where(p => p.idCliente == cliente).Count();

            if (contador == 0)
            {
                MessageBox.Show("Não existem pedidos para este cliente.", "Pedidos", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            StringBuilder sb = new StringBuilder();
            sb.AppendLine("              Salgados Celia              ");
            sb.AppendLine("==========================================");
            sb.AppendLine("     Relatorio de Pedidos por Cliente     ");
            sb.AppendLine("==========================================");
            sb.AppendLine("Cliente: " + cboClientes.Text);
            sb.AppendLine("==========================================");

            if (rbData.Checked)
                sb.AppendLine("Periodo: de " + dtpInicial.Value.ToShortDateString() + " a " + dtpFinal.Value.ToShortDateString());
            else
                sb.AppendLine("Periodo: Todas as comandas");
            sb.AppendLine("==========================================");
            sb.AppendLine("");
            sb.AppendLine("  Data       Comanda        Valor    Situação");


            string situacao = string.Empty;
            foreach (var item in Contexto.Db.tbVendas.Where(p => p.idCliente == cliente))
            {
                switch (item.statusVenda.ToUpper())
                {
                    case "A":
                        situacao = "Aberto";
                        break;
                    case "E":
                        situacao = "Para Entrega";
                        break;
                    case "F":
                        situacao = "Fechada";
                        break;
                    case "P":
                        situacao = "Pendente Pagamento";
                        break;
                    case "C":
                        situacao = "Cancelada";
                        break;
                    default:
                        break;
                }

                sb.AppendLine(item.dtVenda.ToShortDateString() + "    " + item.numeroVenda.ToString() + "     " + item.valorVenda.ToString("C2") + "   " + situacao);
            }

            sb.AppendLine("================== FIM ==================");

            //Mostrar tela
            var frm = new FrmMostraTela
            {
                Pai = this
            };
            frm.sbImprime = sb;
            frm.ShowDialog();
        }

        private StringBuilder MontarRelatorio(List<DebitoCliente> lista, StringBuilder sb)
        {
            foreach (DebitoCliente item in lista)
            {
                if (item.marcar)
                {
                    sb.AppendLine("  " + item.data + "          " + item.numPedido + "              " + item.valorTotal.ToString("C2"));
                }
            }
            return sb;
        }

    }
}
